package com.cskaoyan.mall.commons.util;

import org.springframework.util.ObjectUtils;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * Auth: 杨宇健
 * Time: 2023/1/9 22:45
 * Description: 判断对象是否全部非空
 **/
public class ObjectEmptyUtils extends ObjectUtils {
    /**
     * 判断对象是否全部非空, 有一个空值(包括对象本身为空)都返回 true, 全是有非空值才返回 false
     *
     * @param o
     * @return boolean
     * @author 杨宇健
     * @since 2023/01/09 22:48
     */
    public static boolean isContainsNull(Object o) {

        // 对象本身空值判断
        if (o == null) {
            return true;
        }

        Class<?> aClass = o.getClass();
        Field[] fields = aClass.getDeclaredFields();
        for (Field field : fields) {
            // 静态变量不做处理
            if (Modifier.isStatic(field.getModifiers())) {
                continue;
            }
            field.setAccessible(true);
            try {
                // 如果有一个空值，那就返回true
                if (field.get(o) == null) {
                    return true;
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        // 全部都非空时，返回false;
        return false;
    }

}
